package com.version1_1.dao;

import com.alibaba.fastjson.JSONArray;
import com.version1_1.model.User;
import java.util.List;
import java.util.Map;

public interface UserDao {

    /**
     * @param userId
     * @return
     * @Description: TODO(用户注册后更新邀请码)
     */
    public String updateUserInviteCode(int userId);

    /**
     * @param userId
     * @return
     * @Description: TODO(获取用户信息)
     */
    public User getUserInfo(int userId);

    /**
     * @param @param  mail
     * @param @param  password
     * @param @return 设定文件
     * @return int    返回类型
     * @throws
     * @Title: userRegister
     * @Description: TODO(用户注册)
     */
    public int userRegister(String telnumber, String mail, String password);

    /**
     * @param @param  userId
     * @param @param  mail
     * @param @param  password
     * @param @return 设定文件
     * @return Map<String,Object>    返回类型
     * @throws
     * @Title: userLogin
     * @Description: TODO(用户登陆)
     */
    public Map<String, Object> userLogin(int userId, String mail,
                                         String telnumber, String password);

    /**
     * @param @param  userId
     * @param @param  userName
     * @param @param  userPhoto
     * @param @param  userSex
     * @param @return 设定文件
     * @return boolean 返回类型
     * @throws
     * @Title: updateUserInfo
     * @Description: TODO(更新用户个人信息)
     */
    public boolean updateUserInfo(int userId, String userName, String userPhoto, String userSex, String school, int schoolYear);


    /**
     * 根据第三方平台获取的信息更新用户信息(头像,性别,昵称)
     * @param userId
     * @param userName
     * @param userPhoto
     * @param userSex
     * @return
     */
    public boolean updateUserInfo(int userId, String userName, String userPhoto, String userSex);


    /**
     * @param @param  updateListString
     * @param @return 设定文件
     * @return boolean    返回类型
     * @throws
     * @Title: updateFocusList
     * @Description: TODO(更新用户关注列表)
     */
    public boolean updateFocusList(String updateListString);

    /**
     * @param @param  userId
     * @param @param  pageNumber
     * @param @param  pageSize
     * @param @return 设定文件
     * @return List    返回类型
     * @throws
     * @Title: getReplyList
     * @Description: TODO(获取用户回复列表信息)
     */
    public List getReplyList(int userId, int pageNumber, int pageSize);

    /**
     * @param @param  userId
     * @param @param  newPasswd
     * @param @return 设定文件
     * @return boolean    返回类型
     * @throws
     * @Title: updatePasswd
     * @Description: TODO(更改密码)
     */
    public boolean updatePasswd(int userId, String newPasswd);

    /**
     * @param @param  userId
     * @param @param  pageNumber
     * @param @param  pageSize
     * @param @return 设定文件
     * @return List    返回类型
     * @throws
     * @Title: getPraiseList
     * @Description: TODO(获取用户点赞列表信息)
     */
    public List getPraiseList(int userId, int pageNumber, int pageSize);

    /**
     * @param @param  userId
     * @param @return 设定文件
     * @return List    返回类型
     * @throws
     * @Title: getPraiseList
     * @Description: TODO(获取系统消息)
     */
    public List getSystemMessageList(int userId);

    /**
     * @param @param  userId
     * @param @param  feedbackType
     * @param @param  feedbackDate
     * @param @param  feedbackContent
     * @param @param  screenShot
     * @param @return 设定文件
     * @return boolean    返回类型
     * @throws
     * @Title: feedback
     * @Description: TODO(用户反馈)
     */
    public boolean feedback(int userId, String feedbackType, String feedbackDate, String feedbackContent,
                            String screenShot1, String screenShot2, String screenShot3, String screenShot4);

    /**
     * @param @param  userId
     * @param @param  pageId
     * @param @return 设定文件
     * @return boolean    返回类型
     * @throws
     * @Title: doCollect
     * @Description: TODO(记录用户收藏)
     */
    public boolean doCollect(int userId, int pageId, int actionType);

    /**
     * @param @param  userId
     * @param @return 设定文件
     * @return List    返回类型
     * @throws
     * @Title: getCollectList
     * @Description: TODO(获取用户收藏列表信息分页数据)
     */
    public List getCollectList(int userId, int pageNumber);

    /**
     * @param userId
     * @param secondType
     * @param pageNumber
     * @return
     * @Description: TODO(根据二级分类ID获取用户收藏中特定的二级分类的文章)
     */
    public List getSecondCollectList(int userId, int secondType, int pageNumber);

    /**
     * @param @param  userId
     * @param @return 设定文件
     * @return List    返回类型
     * @throws
     * @Title: getCollectList
     * @Description: TODO(获取用户收藏列表信息总的数据)
     */
    public List getCollectList(int userId);


    /**
     * @param @param  userId
     * @param @param  deleteList
     * @param @return 设定文件
     * @return boolean    返回类型
     * @throws
     * @Title: delCollect
     * @Description: TODO(登陆用户删除收藏)
     */
    public boolean delCollect(int userId, String deleteList);

    /**
     * @param @param  userId
     * @param @param  mail
     * @param @param  telnumber
     * @param @return 设定文件
     * @return String    返回类型
     * @throws
     * @Title: getCollectString
     * @Description: TODO(获取用户收藏字符串)
     */
    public String getCollectString(int userId, String mail, String telnumber);

    /**
     * @param @param  mail
     * @param @param  telnumber
     * @param @return 设定文件
     * @return boolean    返回类型
     * @throws
     * @Title: checkUserExist
     * @Description: TODO(监测用户是否存在)
     */
    public boolean checkUserExist(String mail, String telnumber);

    /**
     * @param userId
     * @return
     */
    public String checkMessage(int userId);

    /**
     * 去除回复标志
     *
     * @param receiverId
     * @return
     */
    public boolean removeReplyTag(int receiverId);


    /**
     * 根据三级分类名称得到三级分类所属二级分类ID
     *
     * @param thirdTypeName
     * @return
     */
    public String getSecondIdByThirdName(String thirdTypeName);


    /**
     * 用户关注信息更改的同时更改三级分类的关注人数
     *
     * @param updateJsonArray
     * @return
     */
    public boolean changeThirdFocusNum(JSONArray updateJsonArray, JSONArray userJsonArray);


    /**
     * 检测用户输入的手机号或者邮箱号是否已经被注册
     *
     * @param registerInfo
     * @param flag
     * @return
     */
    public boolean checkRegister(String registerInfo, int flag);

    /**
     * 忘记密码
     *
     * @param telnumber
     * @param newPassword
     * @return
     */
    public boolean forgetPass(String telnumber, String newPassword);

    /**
     * 更新用户融云的token值
     *
     * @param userId
     * @return
     */
    public boolean updateUserTokenRY(int userId, String tokenRY);

    public boolean updateUserBaiduId(String baiduId,int userid);


}
